<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of GestorSMS
 *
 * @author Karla
 */
include_once("../../db/MySQL.php");
include_once("../modelo/SMS.php");

class GestorSMS {

    public function __construct() {
	
    }

    public function generarSMS($numeroSMS) {
	$listaSMS = array();
	$hora = date('YmdHis');
	for ($i = 0; $i <= $numeroSMS; $i++) {
	    $mensajeTmp = "text" . $hora . $i;
	    $tempSMS = new SMS($mensajeTmp, "59391454421");
	    $listaSMS[] = $tempSMS;
	}
	return $listaSMS;
    }

    public function updateSMSStated($listaSMS) {
	error_log("Inicia updateSMSStated");
	$myqsql = new MySQL();
	$conexion = $myqsql->getConexion();
	error_log("Se abrio la conexion");
	foreach ($listaSMS as $sms_array) {

	    $query = "update sms set estado = '" . $sms_array["ESTADO"] . "' , 
    fecha_enviado=now() , 
    segundos_envio = " . $sms_array["SEGUNDOS_ENVIO"] . "
	where idsms=" . $sms_array["IDSMS"];

	    if (!$conexion->query($query)) {
		error_log("Query failed: (" . $conexion->errno . ") " . $conexion->error);
		return;
	    }
//	    echo "$query";
//	    echo "<br/>";
	}
	$conexion->commit();
	error_log("Se guardan los registros");
    }

    public function guardarSMStoDB($listaSMS) {

	$myqsql = new MySQL();
	$conexion = $myqsql->getConexion();
//	$conexion->query("SET AUTOCOMMIT=0");
//	$conexion->query("START TRANSACTION");
	foreach ($listaSMS as $SMStemp) {
	    $mensaje = mysql_real_escape_string($SMStemp->getMensaje());
	    $msisdn = mysql_real_escape_string($SMStemp->getMSISND_destino());
	    if (is_null($SMStemp->getEstado())) {
		$query = "insert into sms (fecha_insercion,mensaje,MSISND_destino) values (now(), '$mensaje','$msisdn');\n";
	    } else {
		$query = "update sms set idsms='" . $SMStemp->getIdsms() . "',
		    fecha_insercion='" . $SMStemp->getFecha_insercion() . "',
		    fecha_caducidad='" . $SMStemp->getFecha_caducidad() . "',
		    fecha_tomados=now(),
		    fecha_enviado='" . $SMStemp->getFecha_enviado() . "',
		    iddispositivo='" . $SMStemp->getIddispositivo() . "',
		    segundos_envio='" . $SMStemp->getSegundos_envio() . "',
		    mensaje='" . $SMStemp->getMensaje() . "',
		    MSISND_destino='" . $SMStemp->getMSISND_destino() . "',
		    estado='" . $SMStemp->getEstado() . "'
		    where idsms=" . $SMStemp->getIdsms();
	    }

	    if (!$conexion->query($query)) {
		echo "Query failed: (" . $conexion->errno . ") " . $conexion->error;
	    }
//	    echo "$query";
//	    echo "<br/>";
	}
	$conexion->commit();
    }

    public function getMensajes($numMensajes) {
	$listaSMS = array();
	$myqsql = new MySQL();
	$conexion = $myqsql->getConexion();
	$conexion->query("SET AUTOCOMMIT=0");
	$conexion->query("START TRANSACTION");
	$numMensajes = mysql_real_escape_string($numMensajes);
	$query = "select * from sms 
where (estado in ('N','NE') and (fecha_caducidad is null or fecha_caducidad<=now()) )
or (estado = 'T' and fecha_tomados < date_sub(now(),interval 3*60 SECOND ) )
order by fecha_insercion asc
limit $numMensajes";
	$result = $conexion->query($query);

	if ($result) {

	    /* obtener array asociativo */
	    while ($row = $result->fetch_assoc()) {
		$tempSMS = new SMS($row["mensaje"], $row["MSISND_destino"]);
		$tempSMS->setFecha_caducidad($row["fecha_caducidad"]);
		$tempSMS->setFecha_enviado($row["fecha_enviado"]);
		$tempSMS->setFecha_insercion($row["fecha_insercion"]);
		$tempSMS->setFecha_tomados(date('Y-m-d H:i:s'));
		$tempSMS->setIddispositivo($row["iddispositivo"]);
		$tempSMS->setIdsms($row["idsms"]);
		$tempSMS->setSegundos_envio($row["segundos_envio"]);
		$tempSMS->setEstado("T");
		$listaSMS[] = $tempSMS;
	    }

	    /* liberar el resultset */
	    $result->free();
	}
	/* cerrar la conexión */
	$conexion->close();
	$this->guardarSMStoDB($listaSMS);

	return $listaSMS;
    }

}

?>
